// filePath: include/industrial_robot_control/utils/log.h
#ifndef INDUSTRIAL_ROBOT_CONTROL_UTILS_LOG_H
#define INDUSTRIAL_ROBOT_CONTROL_UTILS_LOG_H

#include <string>
#include <fmt/core.h> // 假设使用fmt库格式化字符串（需确保已安装）

namespace IndustrialRobotControl {
namespace Utils {

// 日志初始化（例如设置日志级别、输出文件等）
void Log::initialize();

// 日志级别枚举
enum class LogLevel {
    DEBUG,
    INFO,
    WARN,
    ERROR,
    FATAL
};

// 日志输出函数（内部实现）
void log(LogLevel level, const std::string& message);

} // namespace Utils
} // namespace IndustrialRobotControl

// 日志宏定义（简化调用）
#define LOG_DEBUG(fmt, ...) \
    IndustrialRobotControl::Utils::log(IndustrialRobotControl::Utils::LogLevel::DEBUG, fmt::format(fmt, ##__VA_ARGS__))

#define LOG_INFO(fmt, ...) \
    IndustrialRobotControl::Utils::log(IndustrialRobotControl::Utils::LogLevel::INFO, fmt::format(fmt, ##__VA_ARGS__))

#define LOG_WARN(fmt, ...) \
    IndustrialRobotControl::Utils::log(IndustrialRobotControl::Utils::LogLevel::WARN, fmt::format(fmt, ##__VA_ARGS__))

#define LOG_ERROR(fmt, ...) \
    IndustrialRobotControl::Utils::log(IndustrialRobotControl::Utils::LogLevel::ERROR, fmt::format(fmt, ##__VA_ARGS__))

#define LOG_FATAL(fmt, ...) \
    IndustrialRobotControl::Utils::log(IndustrialRobotControl::Utils::LogLevel::FATAL, fmt::format(fmt, ##__VA_ARGS__))

#endif // INDUSTRIAL_ROBOT_CONTROL_UTILS_LOG_H